home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / A-Monthly Disks / (c)aak.d64 / golf handicap (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  14KB  |  529 lines

  1. 10 REM GOLF HANDICAP
  2. 20 REM AL JOHNSON
  3. 25 REM 12302 COLERAINE CT
  4. 30 REM RESTON, VA  22091
  5. 35 REM SEND ME A CARD IF YOU LIKE IT OR
  6. 40 REM HAVE ANY SUGGESTIONS
  7. 50 REM REVISED NOV.28/86 J.CAIN
  8. 100 POKE53280,11:POKE53281,15
  9. 110 GOSUB8000
  10. 115 RL=25
  11. 120 DIM CR$(20,24),RD$(50,25),HG$(50,18),HF$(50,18),CU(25,23)
  12. 125 DIM HC(50,7),SC(4)
  13. 130 OPEN15,8,15,"I0":OPEN6,8,6,"0:GLF COURSE,S,R":GOSUB9600
  14. 140 IF EN<>0 THEN OM$="COURSE FILE NOT FOUND":GOTO220
  15. 150 INPUT#6,CC
  16. 160 FORX=1TOCC:FORY=1TO23:INPUT#6,CR$(X,Y):NEXTY:NEXTX
  17. 210 CLOSE6:CLOSE15
  18. 220 U1$="[164]":U2$="[164][164]":SP$="                                   "
  19. 230 U9$="[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
  20. 240 FORX=1TO25:READA,B,C:CU(X,1)=A:CU(X,2)=B:CU(X,3)=C:NEXTX
  21. 250 FORX=828TO828+10   :READA:POKEX,A:NEXTX
  22. 260 POKE850,22:POKE851,8:SYS828
  23. 270 PRINT"PRESS ANY KEY WHEN READY":GOSUB9200
  24. 490 GOTO5000
  25. 499 REM ** LIST COURSE NAMES
  26. 500 PRINT"[147]";TAB(13);"COURSES"
  27. 510 FORX=1TOCC
  28. 520 PRINT"";X;TAB(8);CR$(X,1);TAB(31);CR$(X,23)
  29. 540 NEXTX
  30. 550 PRINT"[151]ENTER NUMBER OF COURSE PLAYED"
  31. 553 INPUT"[151]OR _ IF COURSE NOT SHOWN";CX$:CX=VAL(CX$)
  32. 555 IF CX$="_" THEN RETURN
  33. 560 IF CX<1 OR CX>CC THEN PRINT"INVALID":GOTO550
  34. 570 RETURN
  35. 698 REM *****LOAD SUBROUTINE
  36. 700 PRINT"[147]LOADING GOLF FILE"
  37. 710 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU"
  38. 720 GOSUB9200:IF K$<>"C" THEN OM$="NO LOAD":RETURN
  39. 730 OPEN15,8,15,"I0"
  40. 740 OPEN7,8,7,"0:GOLF DATA,S,R":GOSUB9600
  41. 750 IF AB$="Y"THEN OM$="NO ROUNDS FOUND":GOTO890
  42. 760 INPUT#7,RC
  43. 770 FORX=1TORC
  44. 780 FORY=1TO25:INPUT#7,RD$(X,Y):NEXTY
  45. 790 FORY=1TO18:INPUT#7,HG$(X,Y):NEXTY
  46. 840 FORY=1TO18:INPUT#7,HF$(X,Y):NEXTY
  47. 870 NEXTX
  48. 880 OM$="LOAD OK "+STR$(RC)+" ROUNDS"
  49. 890 CLOSE7:CLOSE15
  50. 900 RETURN
  51. 998 REM ** SAVE SUBROUTINE
  52. 1000 PRINT"[147]SAVE THE ROUNDS TO DISK"
  53. 1010 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU"
  54. 1020 GOSUB9200:IFK$<>"C" THEN OM$="SAVE NOT DONE":RETURN
  55. 1030 OPEN15,8,15,"I0"
  56. 1040 OPEN8,8,8,"@0:GOLF DATA,S,W":GOSUB9600
  57. 1050 IF AB$="Y" THEN OM$="DISK ERROR - "+EM$":GOTO1130
  58. 1055 SV$[178]"Y"
  59. 1060 [152]8,RC
  60. 1070 [129]X[178]1[164]RC
  61. 1080 [129]Y[178]1[164]25:[152]8,RD$(X,Y):[130]Y
  62. 1090 [129]Y[178]1[164]18:[152]8,HG$(X,Y):[130]Y
  63. 1100 [129]Y[178]1[164]18:[152]8,HF$(X,Y):[130]Y
  64. 1110 [130]X
  65. 1120 OM$[178]"SAVE OK - "[170][196](RC)[170]" ROUNDS"
  66. 1130 [160]8:[160]15
  67. 1140 [142]
  68. 1198 [143] **** BACK UP SUBROUTINE
  69. 1200 [153]"LOADBACKUP GOLF ROUNDS"
  70. 1210 [153]"POKECWAIT TO CONTINUE - OTHER FOR MENU":[141]9200
  71. 1220 [139]K$[179][177]"C" [167] OM$[178]"NO BACKUP":[142]
  72. 1230 [153]"INSERT BACKUP DISK
  73. 1240 PRINT"HIT A KEY[151]":GOSUB9200
  74. 1260 OPEN15,8,15,"I0"
  75. 1270 OPEN8,8,8,"GOLF DATA-BK,S,W":GOSUB9600
  76. 1280 IF AB$<>"Y" THEN 1310
  77. 1290 OM$="BKUP DISK ERROR - "+EM$:OP$="INSERT MAIN DISK OR 'Q'"
  78. 1300 CLOSE8:CLOSE15:RETURN
  79. 1310 GOSUB1060
  80. 1315 BK$="Y"
  81. 1320 OM$="BACKUP OK - "+STR$(RC)+" ROUNDS"
  82. 1330 OP$="INSERT MAIN DISK OR QUIT"
  83. 1340 RETURN
  84. 1498 REM *** FILL SCREEN FOR DISPLAY
  85. 1500 PRINT"[147]";TAB(10);"PERSONAL GOLF HANDICAP"
  86. 1510 PRINT"";TAB(15);"ROUNDS PLAYED"
  87. 1520 PRINTTAB(6);"[152]COURSE"
  88. 1530 PRINT" PAR";TAB(9);"RATING";TAB(22);"DATE PLAYED"
  89. 1540 PRINTTAB(10);"SC  G F";TAB(31);"SC  G F"
  90. 1550 FORX=1TO7STEP2
  91. 1560 PRINT"  HOLE ";X;TAB(23);"HOLE ";X+1
  92. 1570 NEXTX
  93. 1580 PRINT"  HOLE  9";TAB(23);"HOLE 10"
  94. 1590 FORX=11TO17 STEP2
  95. 1600 PRINT"  HOLE";X;TAB(23);"HOLE";X+1
  96. 1610 NEXTX
  97. 1620 PRINT"[152]";TAB(5);"PUTTS     SCORE      DFRNTL"
  98. 1630 PRINT"[152]A[146]DD  M[146]ODIFY  N[146]EXT  B[146]ACK  D[146]EL  Q[146]UIT"
  99. 1650 RETURN
  100. 1798 REM PUT UNDERLINE IN TABLE SUBR
  101. 1800 RD$(CP,2)=U2$+U2$
  102. 1810 RD$(CP,3)=U2$+U2$
  103. 1830 FORX=1TO18:RD$(CP,X+3)=U2$:HG$(CP,X)=U1$:HF$(CP,X)=U1$:NEXTX
  104. 1880 RD$(CP,23)=U2$
  105. 1890 RD$(CP,24)=U2$+U1$
  106. 1895 RETURN
  107. 1998 REM ** FILL DATA AREAS OF SCREEN
  108. 2000 PRINT"[151] #";STR$(CP):PRINT"OF ";STR$(RC)
  109. 2003 POKE850,3:POKE851,13:SYS828
  110. 2008 IF LEFT$(CN$,1)<>"[164]"THEN PP=VAL(RD$(CP,1)):CN$=CR$(PP,1)
  111. 2010 PRINT"[151]";CN$;"[146]           "
  112. 2020 FORX=2TO25
  113. 2030 POKE850,CU(X,1):POKE851,CU(X,2):SYS828
  114. 2035 PP=CU(X,3):PRINTLEFT$(SP$,PP);:SYS828
  115. 2040 PRINTRD$(CP,X)
  116. 2050 IF X<4 OR X>21 THEN 2100
  117. 2060 POKE850,CU(X,1):POKE851,CU(X,2)+4:SYS828
  118. 2070 PRINTHG$(CP,X-3)
  119. 2080 POKE850,CU(X,1):POKE851,CU(X,2)+6:SYS828
  120. 2090 PRINTHF$(CP,X-3)
  121. 2100 NEXTX
  122. 2110 RETURN
  123. 2198 REM ** CALC BIRDS PARS ETC
  124. 2200 FOR X=4 TO 21
  125. 2203 W9=VAL(RD$(CP,1))
  126. 2210 W=VAL(CR$(W9,X+1))-VAL(RD$(CP,X))
  127. 2220 IF W=2 THEN EG=EG+1
  128. 2230 IF W=1 THEN BI=BI+1
  129. 2240 IF W=0 THEN PA=PA+1
  130. 2250 IF W=-1 THEN BO=BO+1
  131. 2260 IF W=-2 THEN DB=DB+1
  132. 2270 IF W<-2 THEN OT=OT+1
  133. 2280 NEXTX
  134. 2285 IF S$="Y" THEN RETURN
  135. 2290 POKE850,19:POKE851,2:SYS828
  136. 2300 PRINT"EGL";EG;" BIRD";BI;" PAR";PA;
  137. 2310 PRINT" BOG";BO;" DBL";DB;"[151]"
  138. 2320 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0
  139. 2330 RETURN
  140. 2398 REM  CALC, STORE AND PRINT SCORES
  141. 2400 SC=0:PRINT"[151]"
  142. 2410 FORX=4TO21:SC=SC+VAL(RD$(CP,X)):NEXT
  143. 2420 RD$(CP,24)=STR$(SC)
  144. 2425 POKE850,CU(24,1):POKE851,CU(24,2):SYS828:PRINTSTR$(SC)
  145. 2430 CZ=VAL(RD$(CP,1))
  146. 2440 HD=(SC-VAL(CR$(CZ,3)))
  147. 2443 PP=(INT(HD*10)/10):RD$(CP,25)=STR$(PP)
  148. 2445 POKE850,CU(25,1):POKE851,CU(25,2):SYS828
  149. 2447 PRINT"     ":SYS828:PRINTRD$(CP,25)
  150. 2450 POKE850,CU(22,1):POKE851,CU(22,2):SYS828
  151. 2460 PRINTCR$(CZ,2):RD$(CP,22)=CR$(CZ,2)
  152. 2470 RD$(CP,2)=CR$(CZ,3)
  153. 2480 POKE850,CU(2,1):POKE851,CU(2,2):SYS828:PRINT"    ":SYS828
  154. 2490 PRINT RD$(CP,2)
  155. 2500 RETURN
  156. 2598 REM INPUT SUBR TO ADD A RND
  157. 2600 POKE850,CU(3,1):POKE851,CU(3,2):SYS828
  158. 2603 FP=3
  159. 2610 PRINT"?[157][151]";:GOSUB9000
  160. 2620 RD$(CP,3)=AN$
  161. 2630 FORX=4TO21
  162. 2640 POKE850,CU(X,1):POKE851,CU(X,2):SYS828
  163. 2645 PRINT"?[151][157]";
  164. 2647 FP=X
  165. 2650 GOSUB9000
  166. 2660 RD$(CP,X)=AN$
  167. 2670 POKE851,CU(X,2)+4:SYS828:PRINT"?[151][157]";
  168. 2680 GOSUB8800
  169. 2685 IF AN$<>"Y"THEN HG$(CP,X-3)="N":GOTO2695
  170. 2690 HG$(CP,X-3)="Y"
  171. 2695 PRINTHG$(CP,X-3);
  172. 2700 POKE851,CU(X,2)+6:SYS828:PRINT"?[151][157]";
  173. 2710 GOSUB8800
  174. 2715 IF AN$<>"Y"THENHF$(CP,X-3)="N":GOTO2725
  175. 2720 HF$(CP,X-3)="Y"
  176. 2725 PRINTHF$(CP,X-3);
  177. 2730 NEXTX
  178. 2740 POKE850,CU(23,1):POKE851,CU(23,2):SYS828
  179. 2750 PRINT"?[151][157]";
  180. 2760 GOSUB9000
  181. 2770 RD$(CP,23)=AN$
  182. 2780 RETURN
  183. 2900 POKE850,20:POKE851,6:SYS828
  184. 2910 RETURN
  185. 2950 POKE850,20:POKE851,6:SYS828
  186. 2960 PRINTSP$
  187. 2970 RETURN
  188. 3000 POKE850,CU(FP,1):POKE851,CU(FP,2):SYS828
  189. 3010 PRINT"?[151][157]";
  190. 3020 GOSUB9000
  191. 3030 IF VAL(AN$)<>0 THEN RD$(CP,FP)=AN$:GOTO3050
  192. 3040 PRINTRD$(CP,FP);"[155]"
  193. 3050 IF FP<4 OR FP>21 THEN PRINT"":RETURN
  194. 3060 POKE851,CU(FP,2)+4:SYS828
  195. 3070 PRINT"?[151][157]";
  196. 3080 GOSUB8800
  197. 3090 IF AN$<>"" THEN HG$(CP,FP-3)=AN$:PRINTAN$:GOTO3110
  198. 3100 PRINT"[151]";HG$(CP,FP-3);"[155]"
  199. 3110 POKE851,CU(FP,2)+6:SYS828
  200. 3120 PRINT"?[151][157]";:GOSUB8800
  201. 3130 IF AN$<>"" THEN HF$(CP,FP-3)=AN$:PRINTAN$:GOTO3150
  202. 3140 PRINT"[151]";HF$(CP,FP-3);"[152]"
  203. 3150 PRINT"[155]"
  204. 3160 RETURN
  205. 4990 REM ****************
  206. 4992 REM * MAIN PROG MENU
  207. 4994 REM ****************
  208. 5000 POKE53280,11:PRINT"[147]";TAB(15);"GOLF MENU"
  209. 5010 PRINT"[151]LOAD GOLF FILE";TAB(25);"L"
  210. 5020 PRINT"SAVE GOLF FILE";TAB(25);"S"
  211. 5030 PRINT"BACKUP GOLF FILE";TAB(25);"B"
  212. 5040 PRINT"ROUNDS";TAB(25);"R"
  213. 5050 PRINT"HANDICAP";TAB(25);"H"
  214. 5060 PRINT"STATISTICS";TAB(25);"C"
  215. 5070 PRINT"QUIT";TAB(25);"Q"
  216. 5080 PRINT"";OM$;"[146][151]":OM$="":AB$=""
  217. 5090 PRINT"";OP$;"[146][151]":OP$=""
  218. 5100 GOSUB9200
  219. 5110 IF K$="L" THEN GOSUB700:GOTO5000
  220. 5120 IF K$="S" THEN GOSUB1000:GOTO5000
  221. 5130 IF K$="B" THEN GOSUB1200:GOTO5000
  222. 5140 IF K$="R" THEN 5300
  223. 5150 IF K$="H" THEN 6200
  224. 5160 IF K$="C" THEN 6800
  225. 5170 IF K$="Q" THEN 7400
  226. 5180 GOTO5100
  227. 5300 IF RC=0THENCN$=U9$
  228. 5310 IF RC<>0 THEN CX=VAL(RD$(1,1)):CN$=CR$(CX,1)
  229. 5320 GOSUB1500: REM FILL SCREEN
  230. 5325 CP=1:POKE53280,6
  231. 5340 GOSUB2000: REM DATA TO SCREEN
  232. 5360 IF RC<>0 THEN GOSUB2200:GOSUB2400:REM COUNT BIRD PAR ETC
  233. 5370 IF RC=0THENGOSUB2900:PRINT"NO ROUNDS LOADED[151]"
  234. 5400 REM DUMMY LINE
  235. 5405 GET W$:IF W$="" THEN 5405
  236. 5410 IF W$="A" THEN POKE53280,2:GOTO5500
  237. 5420 IF W$="N" THEN POKE53280,6:GOTO5650
  238. 5430 IF W$="B" THEN POKE53280,6:GOTO5700
  239. 5440 IF W$="Q" THEN 5000
  240. 5450 IF W$="D"THEN POKE53280,11:GOTO5760
  241. 5460 IF W$="M" THEN POKE53280,7:GOTO6000
  242. 5470 GOTO5405
  243. 5490 REM *** ADD A ROUND
  244. 5500 GOSUB2950:GOSUB500: REM GET COURSE NAME
  245. 5503 IF CX=0THENGOSUB1500:GOSUB2900:PRINT"COURSE NOT ON FILE[151]":GOTO5405
  246. 5505 CN$=CR$(CX,1):CP=RC+1:RD$(CP,1)=CX$:CH$="Y"
  247. 5520 GOSUB1800: REM UNDERLINES IN TABLE
  248. 5530 GOSUB1500: REM DISPLAY SCREEN
  249. 5540 GOSUB2000:REM DISPLAY DATA ON SCR
  250. 5550 GOSUB2600: REM GET DATA
  251. 5560 GOSUB2400: REM CALC SCORES
  252. 5570 GOSUB2200: REM CALC BIRD PAR ETC
  253. 5580 RC=RC+1
  254. 5590 GOTO5405
  255. 5648 REM *** VIEW NEXT ROUND
  256. 5650 GOSUB2950:IF CP+1>RC THEN 5400
  257. 5660 CP=CP+1:GOSUB2000:GOSUB2400:GOSUB2200
  258. 5670 GOTO5400
  259. 5698 REM *** BACK 1 RECORD
  260. 5700 GOSUB2950:IF CP-1<1 THEN 5400
  261. 5710 CP=CP-1:GOSUB2000:GOSUB2400:GOSUB2200
  262. 5720 GOTO5400
  263. 5760 GOSUB2900:PRINT"ARE YOU SURE? (Y/N)[146]"
  264. 5770 GETS$:IFS$="" THEN 5770
  265. 5780 IF S$<>"Y"THEN GOSUB2950:GOTO5400
  266. 5790 GOSUB2900:PRINT"O.K.  DELETING                 "
  267. 5800 FORX=CPTORC+1
  268. 5810 FOR Y=1TORL
  269. 5820 RD$(X,Y)=RD$(X+1,Y)
  270. 5830 NEXTY:NEXTX
  271. 5840 FORX=CPTORC+1
  272. 5850 FORY=1TO18
  273. 5860 HG$(X,Y)=HG$(X+1,Y):HF$(X,Y)=HF$(X+1,Y)
  274. 5870 NEXTY:NEXTX
  275. 5880 RC=RC-1
  276. 5890 IF CP>RC THEN CP=RC
  277. 5900 GOSUB2000:GOSUB2400:GOSUB2200
  278. 5910 GOSUB2950:GOSUB2900:PRINT"DONE"
  279. 5920 FORX=1TO500:NEXT
  280. 5930 GOSUB2950:CH$="Y"
  281. 5940 GOTO 5400
  282. 5990 REM *** MODIFY ROUND
  283. 6000 GOSUB2950:POKE850,23:POKE851,3:SYS828
  284. 6010 PRINT"D[146]ATE  P[146]UTTS  1-18[146]  Q[146]UIT  N[146]AME  T[146]BL"
  285. 6020 GOSUB9400:GOSUB2950
  286. 6030 IF AN$="D" THEN FP=3:GOTO6080
  287. 6033 IF AN$="P" THEN FP=23:GOTO6080
  288. 6035 IF AN$<>"N"THEN 6043
  289. 6037 GOSUB500:IFCX=0 THEN 6040
  290. 6039 RD$(CP,1)=CX$
  291. 6040 GOSUB1500:GOSUB2000:GOSUB2400:GOSUB2200
  292. 6041 GOSUB2900:PRINT"DONE":GOTO6020
  293. 6043 IF AN$<>"T" THEN 6050
  294. 6045 GOSUB2400:GOSUB2900:PRINT"O.K.":GOTO6020
  295. 6050 IF VAL(AN$)>00 AND VAL(AN$)<19 THEN FP=VAL(AN$)+3:GOTO6080
  296. 6060 IF AN$="Q" THEN 6100
  297. 6070 GOTO6020
  298. 6075 CH$="Y"
  299. 6080 GOSUB3000
  300. 6086 GOSUB2900:PRINT"O.K."
  301. 6090 GOTO6020
  302. 6100 GOSUB2400:GOSUB2200
  303. 6110 POKE850,23:POKE851,3:SYS828
  304. 6120 PRINTSP$:POKE53280,11:GOTO5400
  305. 6190 REM *****************
  306. 6193 REM * CALC HANDICAP RTN
  307. 6195 REM *****************
  308. 6200 PRINT"[147]CALCULATE HANDICAP"
  309. 6210 PRINT"F1[146][151]  CALCULATE OVERALL HANDICAP"
  310. 6220 PRINT"F3[146][151]  HANDICAP FOR ONE COURSE"
  311. 6230 PRINT"F7[146][151]  MAIN MENU"
  312. 6240 PRINT"";OM$;"[146][151]":OM$="":OC$="":RX=0:PS=0
  313. 6250 GOSUB9200
  314. 6260 IF K$="[136]" THEN 5000: REM F7
  315. 6270 IF K$<>"[133]"ANDK$<>"[134]" THEN 6250
  316. 6280 IF K$="[134]" THEN OC$="Y":GOSUB500:PRINT"[147]"
  317. 6285 IF K$="[134]"ANDCX=0 THEN OM$="NOT DONE":GOTO6200
  318. 6290 IF K$="[133]" AND RC<5 THEN OM$="NOT ENOUGH ROUNDS TO CALCULATE":GOTO6200
  319. 6300 PRINT"[147]CALCULATING[151]"
  320. 6303 IF RC<=20 THEN PX=1
  321. 6305 IF RC>20THENPX=RC-19
  322. 6310 FORX=1TO20:FORY=1TO4:HC(X,Y)=0:NEXTY:NEXTX
  323. 6320 FORX=RC TO PX STEP-1
  324. 6330 IF OC$="Y"THENIFRD$(X,1)<>CX$GOTO6370
  325. 6340 PS=PS+1:HC(PS,1)=VAL(RD$(X,25))
  326. 6350 HC(PS,2)=VAL(RD$(X,1)):HC(PS,3)=VAL(RD$(X,3))
  327. 6360 HC(PS,4)=VAL(RD$(X,24)):RX=RX+1
  328. 6370 NEXTX
  329. 6380 IF RX<5 THEN OM$="MIN 5 ROUNDS REQUIRED":GOTO6200
  330. 6390 REM *** NOW SORT ON DIFFERENTIAL
  331. 6400 FORX=1TORX-1
  332. 6410 IF HC(X,1)<=HC(X+1,1) THEN 6455
  333. 6420 FORY=1TO4:SC(Y)=HC(X,Y):NEXTY
  334. 6430 FOR Y=1TO4:HC(X,Y)=HC(X+1,Y):NEXTY
  335. 6440 FORY=1TO4:HC(X+1,Y)=SC(Y):NEXTY
  336. 6450 SR$="Y"
  337. 6455 NEXTX
  338. 6460 IF SR$="Y"THEN SR$="":GOTO6400
  339. 6470 REM DETERMINE # DIFFS NEEDED
  340. 6480 IF RX=5 THEN ND=1:GOTO6520
  341. 6490 IF RX=6 THEN ND=2:GOTO6520
  342. 6500 IF RX>20 THEN ND=10:GOTO6520
  343. 6510 ND=INT(RX/2)
  344. 6520 TD=0:FORX=1TOND:TD=TD+HC(X,1):NEXTX
  345. 6530 TD=(TD/ND)*.96
  346. 6540 TD=INT(TD+.5)
  347. 6550 PRINT"[147]YOUR HANDICP IS ";TD;
  348. 6560 IF OC$="Y" THEN PRINT" FOR ";CR$(CX,1)
  349. 6570 IF OC$<>"Y"THEN PRINT" FOR ALL COURSES"
  350. 6580 PRINT"";ND;" DIFFERENTIALS USED FROM ";RX;" ROUNDS"
  351. 6590 PRINT"";TAB(8);"F5[146] TO SEE ROUNDS USED"
  352. 6600 GOSUB9200:IFK$<>"[135]" THEN 6200
  353. 6610 PRINT"":TM=0
  354. 6620 FORX=1TORX
  355. 6625 DT=(LEN(STR$(HC(X,3))))-2:DT$=LEFT$(STR$(HC(X,3)),DT)+"-"
  356. 6626 DX$=STR$(HC(X,3)):DT$=DT$+MID$(DX$,DT+1)
  357. 6630 W1=HC(X,2):PRINT"[151]";CR$(W1,1);TAB(22);DT$;
  358. 6640 PRINTTAB(28);STR$(HC(X,4));TAB(32);STR$(HC(X,1));
  359. 6650 IF X<=ND THEN PRINT" _":GOTO6670
  360. 6660 PRINT
  361. 6670 TM=TM+1:IFTM<9 THEN 6700
  362. 6680 TM=0:PRINT"";TAB(7);"MORE - PRESS A KEY[151]"
  363. 6690 GOSUB9200:PRINT"[147]"
  364. 6700 NEXTX
  365. 6710 PRINTTAB(7);"ALL - PRESS A KEY[151]":GOSUB9200:GOTO5000
  366. 6800 PRINT"[147]";TAB(9);"PERSONAL GOLF STATISTICS"
  367. 6810 PRINT"F1[146]  [151]OVERALL BY COURSE"
  368. 6820 PRINT"F3[146]  [151]PARS BIRDS ETC"
  369. 6870 PRINT"F8[146]  [151]RETURN TO MAIN MENU"
  370. 6880 GOSUB9200
  371. 6890 IF K$="[140]" THEN 5000:REM F8
  372. 6900 IF K$="[133]" THEN 6950: REM F1
  373. 6910 IF K$="[134]"THEN 7500:REM F3
  374. 6940 GOTO6880
  375. 6950 PRINT"[147]":POKE850,10:POKE851,11:SYS828
  376. 6960 PRINT"CALCULATING STATS[151]"
  377. 6970 FORX=0TO20:FORY=0TO5:HC(X,Y)=0:NEXTY:NEXTX
  378. 6980 FORX=1TORC
  379. 6990 WX=VAL(RD$(X,1)):HC(WX,1)=HC(WX,1)+1:REM ROUNDS
  380. 7000 HC(0,1)=HC(0,1)+1
  381. 7010 HC(WX,2)=HC(WX,2)+VAL(RD$(X,24))
  382. 7020 HC(0,2)=HC(0,2)+VAL(RD$(X,24))
  383. 7030 HC(WX,3)=HC(WX,3)+VAL(RD$(X,23))
  384. 7040 HC(0,3)=HC(0,3)+VAL(RD$(X,23))
  385. 7050 FOR Y=1 TO 18
  386. 7060 IF HG$(X,Y)<>"Y" THEN 7090
  387. 7070 HC(WX,4)=HC(WX,4)+1
  388. 7080 HC(0,4)=HC(0,4)+1
  389. 7090 IF HF$(X,Y)<>"Y" THEN 7120
  390. 7100 HC(WX,5)=HC(WX,5)+1
  391. 7110 HC(0,5)=HC(0,5)+1
  392. 7120 NEXTY
  393. 7130 NEXTX
  394. 7140 PRINTTAB(10);"[147]OVERALL AVERAGES[151]"
  395. 7150 PRINT"   CRS  RND   SCORE  PUTT   HG %  HF %[151]"
  396. 7160 FORX=1TO20
  397. 7170 IFHC(X,1)=0 THEN 7300
  398. 7180 PRINT"  ";CR$(X,23);TAB(8);HC(X,1);
  399. 7190 W1=HC(X,2)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10
  400. 7200 PRINTTAB(13);W1;
  401. 7210 W1=HC(X,3)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10
  402. 7220 PRINTTAB(21);W1;
  403. 7230 W1=HC(X,4)/(HC(X,1)*18)
  404. 7240 W1=INT((W1+.05)*1000):W1=W1/10
  405. 7250 PRINTTAB(27);W1;
  406. 7260 W1=HC(X,5)/(HC(X,1)*18)
  407. 7270 W1=INT((W1+.05)*1000):W1=W1/10
  408. 7280 PRINTTAB(33);W1
  409. 7290 IF X=0 THEN RETURN
  410. 7300 NEXTX
  411. 7310 PRINT"TOTAL";TAB(8);HC(0,1);
  412. 7320 X=0:GOSUB7190
  413. 7330 POKE850,23:POKE851,17:SYS828
  414. 7340 PRINT"PRESS A KEY[155]"
  415. 7350 GOSUB9200:GOTO6800
  416. 7400 IF SV$="Y" THEN 7450
  417. 7410 IF CH$<>"Y" THEN 7450
  418. 7420 SV$="Y":OM$="CHANGES MADE - NO SAVE DONE"
  419. 7430 OP$="'Q' AGAIN TO VERIFY":GOTO5000
  420. 7450 PRINT"[147]END OF RUN":END
  421. 7500 PRINT"[147]A[146]CTUAL OR AV[146]ERAGE"
  422. 7510 GOSUB9200:IFK$<>"A"ANDK$<>"V" THEN 7500
  423. 7520 W$=K$:PRINT"CALCULATING":S$="Y"
  424. 7523 FORX=0TO30:FORY=0TO7:HC(X,Y)=0:NEXTY:NEXTX
  425. 7530 FORCP=1TORC
  426. 7540 GOSUB2200
  427. 7550 HC(W9,1)=HC(W9,1)+1
  428. 7555 HC(W9,2)=HC(W9,2)+EG
  429. 7560 HC(W9,3)=HC(W9,3)+BI
  430. 7565 HC(W9,4)=HC(W9,4)+PA
  431. 7570 HC(W9,5)=HC(W9,5)+BO
  432. 7575 HC(W9,6)=HC(W9,6)+DB
  433. 7580 HC(W9,7)=HC(W9,7)+OT
  434. 7590 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0
  435. 7600 NEXTCP
  436. 7610 FORX=1TO20:IFHC(X,1)=0THEN7630
  437. 7620 FORY=1TO7:HC(0,Y)=HC(0,Y)+ HC(X,Y):NEXTY
  438. 7630 NEXTX
  439. 7640 IF W$="A" THEN LC=0:T$="N":GOTO7710
  440. 7650 FORX=0TO20:IFHC(X,1)=0THEN7700
  441. 7660 FORY=2TO7
  442. 7670 W=INT((HC(X,Y)/HC(X,1))*10)
  443. 7680 HC(X,Y)=W/10
  444. 7690 NEXTY
  445. 7700 NEXTX:S$="N":LC=0:T$="N"
  446. 7710 PRINT"[147] CRS  RND EGL  BRD  PAR  BOG  DBL  >DB[151]"
  447. 7720 FORX=1TO20:IFHC(X,1)=0THEN7810
  448. 7730 PRINTCR$(X,23);TAB(6);HC(X,1);
  449. 7740 Z=5:FORY=2TO7
  450. 7750 PRINTTAB(Z+5);HC(X,Y);
  451. 7760 Z=Z+5:NEXTY:LC=LC+1:PRINT
  452. 7770 IFLC<15 THEN 7800
  453. 7780 LC=0:GOSUB9190
  454. 7790 PRINT"[147] CRS  RND EGL  BRD  PAR  BOG  DBL  >DB[151]"
  455. 7800 IF T$="Y"THENRETURN
  456. 7810 NEXTX
  457. 7820 PRINT"TOTAL";TAB(6);HC(0,1);
  458. 7830 X=0:T$="Y":GOSUB7740
  459. 7840 GOSUB9190:GOTO6800
  460. 8000 PRINT"[147]";TAB(8);"PERSONAL GOLF STATISTICS"
  461. 8010 PRINTTAB(8);"HANDICAP AND STATISTICS"
  462. 8020 PRINT"[151] THIS PROGRAM ALLOWS YOU TO ENTER DATA"
  463. 8030 PRINT" ABOUT A ROUND OF GOLF.  YOU MAY SEE"
  464. 8040 PRINT" YOUR HANDICAP AND OTHER ASSORTED"
  465. 8050 PRINT" STATISTICS."
  466. 8060 PRINT"FOLLOW THE MENUS TO ENTER OR MODIFY"
  467. 8070 PRINT"INFORMATION.  A RED QUESTION MARK (?[151])"
  468. 8080 PRINT"WILL SHOW YOU WHERE THE CURSOR IS. IF"
  469. 8090 PRINT"YOU ENTER LESS THAN THE MAX NUMBER OF"
  470. 8100 PRINT"CHARACTERS, PRESS RETURN[151]."
  471. 8110 PRINT"YOU WILL BE ASKED TO ENTER THE SCORE "
  472. 8120 PRINT"ON EACH HOLE, AS WELL AS WHETHER YOU"
  473. 8130 PRINT"HIT THE GREEN AND FAIRWAY.  PRESSING"
  474. 8140 PRINT"RETURN FOR THE LAST TWO ASSUMES NO."
  475. 8160 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0:SC=0:CZ=0:HD=0:PP=0
  476. 8200 RETURN
  477. 8798 REM *** GETS FOR HF AND HG
  478. 8800 POKE198,0:A$="":AN$=""
  479. 8810 GETA$:IFA$="" THEN 8810
  480. 8820 IF A$=CHR$(20) THEN 8810
  481. 8830 IF A$=CHR$(13)THEN RETURN
  482. 8840 AN$=A$:RETURN
  483. 8998 REM *** GETS FOR SCORES AND STUFF
  484. 9000 POKE198,0:A$="":AN$="":TM=0
  485. 9010 GETA$:IF A$="" THEN 9010
  486. 9020 IF A$=CHR$(20) THEN 9010
  487. 9030 IF A$=CHR$(13) ANDTM=0THEN9010
  488. 9035 IF A$=CHR$(13) THEN RETURN
  489. 9040 IF A$<"0"ORA$>"9"THEN 9010
  490. 9050 PRINTA$;
  491. 9060 AN$=AN$+A$:TM=TM+1
  492. 9070 IF TM=CU(FP,3)THEN RETURN
  493. 9080 GOTO9010
  494. 9190 POKE850,22:POKE851,7:SYS828:PRINT"PRESS A KEY[151]"
  495. 9200 GETK$:IFK$="" THEN 9200
  496. 9210 RETURN
  497. 9398 REM *** INP FOR MODIFY RTN
  498. 9400 POKE198,0:AN$="":A$="":TM=0
  499. 9410 GETA$:IFA$="" THEN 9410
  500. 9413 IF A$=CHR$(20) THEN 9410
  501. 9415 IF A$=CHR$(13)THENRETURN
  502. 9420 IF(A$="D"ORA$="P"ORA$="Q")ANDTM=0THENAN$=A$:RETURN
  503. 9422 IF(A$="N"ORA$="T")ANDTM=0THENAN$=A$:RETURN
  504. 9430 TM=TM+1:IFA$>"0"ANDA$<"9"THEN9440
  505. 9432 IFA$="9"ANDTM=1THENTM=2:GOTO9440
  506. 9434 IF A$="0"ANDTM=2 THEN RETURN
  507. 9435 GOTO 9410
  508. 9440 AN$=AN$+A$
  509. 9450 IF TM=2 THEN RETURN
  510. 9460 GOTO9410
  511. 9600 INPUT#15,EN,EM$
  512. 9610 IF EN=0 THEN RETURN
  513. 9620 AB$="Y":RETURN
  514. 10000 DATA 2,13,20,4,16,4,4,34,4
  515. 10010 DATA 8,10,2,8,31,2
  516. 10020 DATA 9,10,2,9,31,2
  517. 10030 DATA 10,10,2,10,31,2
  518. 10040 DATA 11,10,2,11,31,2
  519. 10050 DATA 12,10,2,12,31,2
  520. 10060 DATA 13,10,2,13,31,2
  521. 10070 DATA 14,10,2,14,31,2
  522. 10080 DATA 15,10,2,15,31,2
  523. 10090 DATA 16,10,2,16,31,2
  524. 10100 DATA 4,5,2,18,11,2
  525. 10110 DATA 18,21,3,18,33,4
  526. 10998 REM M/L FOR CURSOR
  527. 11000 DATA 174,82,03,172,83,03,24,32,240,255,96
  528. 12000 OPEN15,8,15,"S:GOLF HANDICAP":CLOSE15:SAVE"GOLF HANDICAP",8
  529.